#include<bits/stdc++.h>
using namespace std;
const int M=100005;
int t,n,m,l,V,d[M],v[M],a[M],p[M],ffmin=0,bmax=M,cnt=0;
double spe(int dn,int vn,int an,int pn){
    double dis=double(pn-dn);
    double rv=sqrt(double(vn*vn)+double(2*an*dis));
    if(rv<0)rv=0;
    return rv;
}
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>n>>m>>l>>V;
        for(int j=1;j<=n;j++){
            cin>>d[j]>>v[j]>>a[j];
        }
        for(int j=1;j<=m;j++){
            cin>>p[j];
        }
        for(int j=1;j<=n;j++){
            for(int l=1;l<=m;l++){
                if(p[l]>d[j])continue;
                if(spe(d[j],v[j],a[j],p[l])>V){
                    cnt++;
                    break;
                }
            }
            if(a[j]==0){
                if(v[j]>V){
                    ffmin=max(ffmin,1);
                    bmax=min(bmax,m);
                }
                else continue;
            }
            if(a[j]>0){
                for(int l=m;l>=1;l--){
                    if(p[l]<d[j])break;
                    if(spe(d[j],v[j],a[j],p[l])<=V){
                        bmax=max(bmax,l+1);
                        break;
                    }
                }
            }
            if(a[j]<0){
                for(int l=1;l<=m;l++){
                    if(p[l]<d[j])break;
                    if(spe(d[j],v[j],a[j],p[l])<=V){
                        ffmin=min(ffmin,l-1);
                        break;
                    }
                }
            }
        }
        int del;
        if(ffmin>=bmax)del=0;
        else del=bmax-1-ffmin;
        cout<<cnt<<" "<<del<<endl;
    }
    return 0;
}
